package org.builder;

import java.util.ArrayList;

public class Direct {
	private ArrayList<String> sequence = new ArrayList<String>();
	private ConcreteBuilder1 concreteBuilder1 = new ConcreteBuilder1();
	private ConcreteBuilder2 concreteBuilder2 = new ConcreteBuilder2();

	// 获取产品1，并设置执行队列为方法1，2，3
	public ConcreteProudct1 getConcreteProudct1a() {
		// 清除队列内容，并设置执行方法的顺序
		this.sequence.clear();
		this.sequence.add("method1");
		this.sequence.add("method2");
		this.sequence.add("method3");
		concreteBuilder1.setSequence(this.sequence);
		return (ConcreteProudct1) this.concreteBuilder1.getProductModel();
	}

	// 获取产品1，并设置执行队列为方法3，2，1
	public ConcreteProudct1 getConcreteProudct1b() {
		// 清除队列内容，并设置执行方法的顺序
		this.sequence.clear();
		this.sequence.add("method3");
		this.sequence.add("method2");
		this.sequence.add("method1");
		concreteBuilder1.setSequence(this.sequence);
		return (ConcreteProudct1) this.concreteBuilder1.getProductModel();
	}

	// 获取产品2，并设置执行队列为方法1，3
	public ConcreteProudct2 getConcreteProudct2a() {
		// 清除队列内容，并设置执行方法的顺序
		this.sequence.clear();
		this.sequence.add("method1");
		this.sequence.add("method3");
		concreteBuilder2.setSequence(this.sequence);
		return (ConcreteProudct2) this.concreteBuilder2.getProductModel();
	}

	// 获取产品2，并设置执行队列为方法3，1
	public ConcreteProudct2 getConcreteProudct2b() {
		// 清除队列内容，并设置执行方法的顺序
		this.sequence.clear();
		this.sequence.add("method3");
		this.sequence.add("method1");
		concreteBuilder2.setSequence(this.sequence);
		return (ConcreteProudct2) this.concreteBuilder2.getProductModel();
	}
}
